package com.ssy.lingxi.contract.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.contract.model.vo.sign.request.*;
import com.ssy.lingxi.contract.model.vo.sign.response.OrderSettleSignDetailResponse;
import com.ssy.lingxi.contract.model.vo.sign.response.SignContractCreateResponse;
import com.ssy.lingxi.contract.model.vo.sign.response.SignCreateResponse;


/**
 * 订单合同签署服务类
 * @author yzc
 * @version 2.0.0
 * @date 2021/1/28
 */
public interface IOrderSignatureService {

    /**
     * 生成电子合同(创建订单后)
     * @param request 请求参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<SignContractCreateResponse> signContractCreate(SignContractRequest request, UserLoginCacheDTO loginUser);

    /**
     * 生成电子合同(创建订单前)
     * @param request 请求参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<SignContractCreateResponse> preOrderSignContractCreate(SignContractPreOrderRequest request, UserLoginCacheDTO loginUser);

    /**
     * 销售确认订单-合同签署
     * @param request 请求参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<SignCreateResponse> saleSign(PlatformSignRequest request, UserLoginCacheDTO loginUser);

    /**
     * 采购确认电子合同-合同签署
     * @param request 请求参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> procurementSign(AutoSignRequest request, UserLoginCacheDTO loginUser);

    /**
     * 订单结算-合同签署
     * @param request 请求参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<SignCreateResponse> settlementOrderSettleSign(OrderSettleSignRequest request, UserLoginCacheDTO loginUser);

    /**
     * 订单结算签署详情
     * @return 返回结果
     */
    Wrapper<OrderSettleSignDetailResponse> orderSettleSignDetail(OrderSettleSignDetailRequest request);

}
